package com.xp.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 流程执行记录实体类
 * 
 * @author xp
 * @since 2025-01-01
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("flow_execution")
public class FlowExecution extends BaseEntity {

    /**
     * 执行ID
     */
    @TableField("execution_id")
    private String executionId;

    /**
     * 流程编码
     */
    @TableField("flow_code")
    private String flowCode;

    /**
     * 流程版本
     */
    @TableField("flow_version")
    private String flowVersion;

    /**
     * 输入数据（JSON）
     */
    @TableField("input_data")
    private String inputData;

    /**
     * 输出数据（JSON）
     */
    @TableField("output_data")
    private String outputData;

    /**
     * 执行状态
     */
    @TableField("status")
    private String status;

    /**
     * 开始时间
     */
    @TableField("start_time")
    private LocalDateTime startTime;

    /**
     * 结束时间
     */
    @TableField("end_time")
    private LocalDateTime endTime;

    /**
     * 执行时长（毫秒）
     */
    @TableField("duration")
    private Long duration;

    /**
     * 错误信息
     */
    @TableField("error_message")
    private String errorMessage;

    /**
     * 链路追踪ID
     */
    @TableField("trace_id")
    private String traceId;

    /**
     * 执行人ID
     */
    @TableField("creator_id")
    private Long creatorId;

    /**
     * 应用名称
     */
    @TableField("application_name")
    private String applicationName;

    /**
     * 执行者ID
     */
    @TableField("executor_id")
    private Long executorId;

    /**
     * 逻辑删除标识：0-否，1-是
     */
    @TableLogic
    @TableField("deleted")
    private Integer deleted;
}